﻿using System.ComponentModel;
using System.Reflection;

namespace Utils
{
    public static class EnumHelper
    {
        public static string GetDescription(this Enum value)
        {
            // 检查枚举值是否为 null
            if (value == null)
            {
                throw new ArgumentNullException(nameof(value), "Enum value cannot be null.");
            }

            // 获取枚举成员信息
            var memberInfo = value.GetType().GetMember(value.ToString()).FirstOrDefault();

            // 尝试获取描述特性
            var description = memberInfo?
                .GetCustomAttribute<DescriptionAttribute>()?
                .Description;

            // 返回描述或枚举名
            return description ?? value.ToString();
        }
    }
}